#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
数据迁移脚本：从JSON迁移到SQLite
"""

import os
import json
import shutil
from datetime import datetime
from database import migrate_from_json, HotspotDatabase

def main():
    print("=" * 60)
    print("    地图热点数据迁移工具")
    print("    从 JSON 文件迁移到 SQLite 数据库")
    print("=" * 60)
    
    json_file = 'map_hotspots_data.json'
    db_file = 'map_hotspots.db'
    
    # 检查JSON文件是否存在
    if not os.path.exists(json_file):
        print(f"❌ 找不到数据文件: {json_file}")
        print("请确保在正确的目录中运行此脚本")
        return False
    
    # 显示当前数据统计
    try:
        with open(json_file, 'r', encoding='utf-8') as f:
            data = json.load(f)
        
        images = data.get('imageData', {}).get('images', [])
        hotspot_info = data.get('hotspotInfo', {})
        total_hotspots = sum(len(img.get('hotspots', [])) for img in images)
        
        print(f"\n📊 当前数据统计:")
        print(f"   • 图片数量: {len(images)}")
        print(f"   • 热点数量: {total_hotspots}")
        print(f"   • 热点信息: {len(hotspot_info)}")
        
        # 显示图片列表
        print(f"\n📷 图片列表:")
        for i, img in enumerate(images[:10], 1):  # 只显示前10个
            print(f"   {i}. {img.get('src', 'unknown')} ({len(img.get('hotspots', []))} 个热点)")
        if len(images) > 10:
            print(f"   ... 还有 {len(images) - 10} 个图片")
        
    except Exception as e:
        print(f"❌ 读取JSON文件失败: {e}")
        return False
    
    # 询问用户确认
    print(f"\n⚠️  即将执行以下操作:")
    print(f"   1. 备份现有的数据库文件 (如果存在)")
    print(f"   2. 创建新的SQLite数据库: {db_file}")
    print(f"   3. 从 {json_file} 迁移所有数据")
    print(f"   4. 验证数据完整性")
    
    confirm = input(f"\n是否继续迁移? (y/N): ").strip().lower()
    if confirm not in ['y', 'yes']:
        print("❌ 用户取消迁移")
        return False
    
    # 执行迁移
    print(f"\n🚀 开始迁移...")
    success = migrate_from_json(json_file, db_file)
    
    if success:
        print(f"\n✅ 迁移成功完成!")
        
        # 创建JSON文件备份
        backup_json = f"{json_file}.backup.{datetime.now().strftime('%Y%m%d_%H%M%S')}"
        shutil.copy2(json_file, backup_json)
        print(f"📦 JSON文件已备份到: {backup_json}")
        
        # 验证迁移结果
        print(f"\n🔍 验证迁移结果...")
        db = HotspotDatabase(db_file)
        new_data = db.export_to_json_format()
        
        new_images = new_data.get('imageData', {}).get('images', [])
        new_hotspot_info = new_data.get('hotspotInfo', {})
        new_total_hotspots = sum(len(img.get('hotspots', [])) for img in new_images)
        
        print(f"📊 迁移后数据统计:")
        print(f"   • 图片数量: {len(new_images)}")
        print(f"   • 热点数量: {new_total_hotspots}")
        print(f"   • 热点信息: {len(new_hotspot_info)}")
        
        if (len(images) == len(new_images) and 
            total_hotspots == new_total_hotspots and 
            len(hotspot_info) == len(new_hotspot_info)):
            print("✅ 数据完整性验证通过!")
        else:
            print("⚠️ 数据数量不匹配，请检查迁移结果")
        
        print(f"\n🎉 迁移完成!")
        print(f"\n💡 下一步操作:")
        print(f"   1. 启动服务器: python server.py")
        print(f"   2. 访问页面测试功能")
        print(f"   3. 确认所有热点位置正确")
        print(f"   4. 如有问题，可使用备份文件恢复")
        
        return True
    else:
        print(f"\n❌ 迁移失败!")
        return False

if __name__ == '__main__':
    success = main()
    input(f"\n按 Enter 键退出...")


